<?php
include_once 'Char.php';

class TokenParser{
	var $parsers = array(
		':' => 'parseColon',
		'#' => 'parseSharp',
		'.' => 'parseDot');

	public function parse(&$token, Node &$data){
		$signal = $token[0];

		if(array_key_exists($signal, $this->parsers)){
			$dparser = $this->parsers[$signal];
			$token = substr($token, 1);
		}else{
			$dparser = 'parseDefault';
		}

		return $this->$dparser($token, $data);
	}

	function parseDefault(&$token, Node &$data){
		return $data->setAttribute('#', $token);
	}

	function parseColon(&$token, Node &$data){
		return $data->setAttribute('template', $token);
	}

	function parseSharp(&$token, Node &$data){
		return $data->setAttribute('id', $token);
	}

	function parseDot(&$token, Node &$data){
		$data->addAttribute('class', $token, ' ');
		return true;
	}
}